#ifndef _SEQUOIADB_PYTHON_DRIVER_HPP_
#define _SEQUOIADB_PYTHON_DRIVER_HPP_

#include "util.hpp"

__METHOD_DECLARE(sdb_create_client) ;
__METHOD_DECLARE(sdb_release_client) ;
__METHOD_DECLARE(sdb_connect) ;
__METHOD_DECLARE(sdb_disconnect) ;
__METHOD_DECLARE(sdb_create_user) ;
__METHOD_DECLARE(sdb_remove_user) ;
__METHOD_DECLARE(sdb_get_snapshot) ;
__METHOD_DECLARE(sdb_reset_snapshot) ;
__METHOD_DECLARE(sdb_get_list) ;
__METHOD_DECLARE(sdb_get_collection_space) ;
__METHOD_DECLARE(sdb_get_collection) ;
__METHOD_DECLARE(sdb_create_collection_space) ;
__METHOD_DECLARE(sdb_drop_collection_space) ;
__METHOD_DECLARE(sdb_list_collection_spaces) ;
__METHOD_DECLARE(sdb_list_collections) ;
__METHOD_DECLARE(sdb_list_replica_groups) ;
__METHOD_DECLARE(sdb_get_replica_group_by_name) ;
__METHOD_DECLARE(sdb_get_replica_group_by_id) ;
__METHOD_DECLARE(sdb_create_replica_group) ;
__METHOD_DECLARE(sdb_remove_replica_group) ;
__METHOD_DECLARE(sdb_create_replica_cata_group) ;
__METHOD_DECLARE(sdb_exec_update) ;
__METHOD_DECLARE(sdb_exec_sql) ;
__METHOD_DECLARE(sdb_transaction_begin) ;
__METHOD_DECLARE(sdb_transaction_commit) ;
__METHOD_DECLARE(sdb_transaction_rollback) ;
__METHOD_DECLARE(sdb_flush_configure) ;
__METHOD_DECLARE(sdb_create_JS_procedure) ;
__METHOD_DECLARE(sdb_remove_procedure) ;
__METHOD_DECLARE(sdb_list_procedures) ;
__METHOD_DECLARE(sdb_eval_JS) ;
__METHOD_DECLARE(sdb_backup_offline) ;
__METHOD_DECLARE(sdb_list_backup) ;
__METHOD_DECLARE(sdb_remove_backup) ;
__METHOD_DECLARE(sdb_list_tasks) ;
__METHOD_DECLARE(sdb_wait_task) ;
__METHOD_DECLARE(sdb_cancel_task) ;
__METHOD_DECLARE(sdb_set_session_attri) ;
__METHOD_DECLARE(sdb_get_session_attri) ;
__METHOD_DECLARE(sdb_close_all_cursors) ;
__METHOD_DECLARE(sdb_is_valid) ;
__METHOD_DECLARE(sdb_get_version) ;
__METHOD_DECLARE(sdb_init_client) ;
__METHOD_DECLARE(sdb_create_domain) ;
__METHOD_DECLARE(sdb_drop_domain) ;
__METHOD_DECLARE(sdb_get_domain) ;
__METHOD_DECLARE(sdb_sync) ;
__METHOD_DECLARE(sdb_get_datacenter) ;
__METHOD_DECLARE(sdb_analyze) ;

__METHOD_DECLARE(create_cs) ;
__METHOD_DECLARE(release_cs) ;
__METHOD_DECLARE(cs_get_collection) ;
__METHOD_DECLARE(cs_create_collection) ;
__METHOD_DECLARE(cs_create_collection_use_opt) ;
__METHOD_DECLARE(cs_drop_collection) ;
__METHOD_DECLARE(cs_get_collection_space_name) ;

__METHOD_DECLARE(create_cl) ;
__METHOD_DECLARE(release_cl) ;
__METHOD_DECLARE(cl_get_count) ;
__METHOD_DECLARE(cl_split_by_condition) ;
__METHOD_DECLARE(cl_split_by_percent) ;
__METHOD_DECLARE(cl_split_async_by_condition) ;
__METHOD_DECLARE(cl_split_async_by_percent) ;
__METHOD_DECLARE(cl_bulk_insert) ;
__METHOD_DECLARE(cl_insert) ;
__METHOD_DECLARE(cl_update) ;
__METHOD_DECLARE(cl_upsert) ;
__METHOD_DECLARE(cl_del) ;
__METHOD_DECLARE(cl_query) ;
__METHOD_DECLARE(cl_query_and_update) ;
__METHOD_DECLARE(cl_query_and_remove) ;
__METHOD_DECLARE(cl_create_index) ;
__METHOD_DECLARE(cl_get_index) ;
__METHOD_DECLARE(cl_drop_index) ;
__METHOD_DECLARE(cl_get_collection_name) ;
__METHOD_DECLARE(cl_get_collection_space_name) ;
__METHOD_DECLARE(cl_get_full_name) ;
__METHOD_DECLARE(cl_aggregate) ;
__METHOD_DECLARE(cl_get_query_meta) ;
__METHOD_DECLARE(cl_attach_collection) ;
__METHOD_DECLARE(cl_detach_collection) ;
__METHOD_DECLARE(cl_create_lob) ;
__METHOD_DECLARE(cl_open_lob) ;
__METHOD_DECLARE(cl_remove_lob) ;
__METHOD_DECLARE(cl_truncate_lob);
__METHOD_DECLARE(cl_list_lobs) ;
__METHOD_DECLARE(cl_truncate) ;
__METHOD_DECLARE(cl_create_id_index) ;
__METHOD_DECLARE(cl_drop_id_index) ;

__METHOD_DECLARE(create_domain) ;
__METHOD_DECLARE(release_domain) ;
__METHOD_DECLARE(domain_alter) ;
__METHOD_DECLARE(domain_list_cs) ;
__METHOD_DECLARE(domain_list_cl) ;

__METHOD_DECLARE(create_cursor) ;
__METHOD_DECLARE(release_cursor) ;
__METHOD_DECLARE(cr_next) ;
__METHOD_DECLARE(cr_current) ;
__METHOD_DECLARE(cr_close) ;

__METHOD_DECLARE(create_group) ;
__METHOD_DECLARE(release_group) ;
__METHOD_DECLARE(gp_get_nodenum) ;
__METHOD_DECLARE(gp_get_detail) ;
__METHOD_DECLARE(gp_get_master) ;
__METHOD_DECLARE(gp_get_slave) ;
__METHOD_DECLARE(gp_get_node_by_name) ;
__METHOD_DECLARE(gp_get_node_by_endpoint) ;
__METHOD_DECLARE(gp_create_node) ;
__METHOD_DECLARE(gp_remove_node) ;
__METHOD_DECLARE(gp_attach_node) ;
__METHOD_DECLARE(gp_detach_node) ;
__METHOD_DECLARE(gp_start) ;
__METHOD_DECLARE(gp_stop) ;
__METHOD_DECLARE(gp_is_catalog) ;

__METHOD_DECLARE(create_node) ;
__METHOD_DECLARE(release_node) ;
__METHOD_DECLARE(nd_connect) ;
__METHOD_DECLARE(nd_get_status) ;
__METHOD_DECLARE(nd_get_hostname) ;
__METHOD_DECLARE(nd_get_servicename) ;
__METHOD_DECLARE(nd_get_nodename) ;
__METHOD_DECLARE(nd_stop) ;
__METHOD_DECLARE(nd_start) ;

__METHOD_DECLARE(create_lob) ;
__METHOD_DECLARE(release_lob) ;
__METHOD_DECLARE(lob_close) ;
__METHOD_DECLARE(lob_read) ;
__METHOD_DECLARE(lob_write) ;
__METHOD_DECLARE(lob_seek) ;
__METHOD_DECLARE(lob_lock) ;
__METHOD_DECLARE(lob_lock_and_seek) ;
__METHOD_DECLARE(lob_get_create_time) ;
__METHOD_DECLARE(lob_get_modification_time) ;
__METHOD_DECLARE(lob_get_size) ;
__METHOD_DECLARE(lob_get_oid) ;

__METHOD_DECLARE(create_dc) ;
__METHOD_DECLARE(release_dc) ;
__METHOD_DECLARE(dc_get_name) ;
__METHOD_DECLARE(dc_create_image) ;
__METHOD_DECLARE(dc_remove_image) ;
__METHOD_DECLARE(dc_attach_groups) ;
__METHOD_DECLARE(dc_detach_groups) ;
__METHOD_DECLARE(dc_enable_image) ;
__METHOD_DECLARE(dc_disable_image) ;
__METHOD_DECLARE(dc_activate) ;
__METHOD_DECLARE(dc_deactivate) ;
__METHOD_DECLARE(dc_enable_read_only) ;
__METHOD_DECLARE(dc_disable_read_only) ;
__METHOD_DECLARE(dc_get_detail) ;
#endif
